from abc import ABC, abstractmethod

class SchoolGirl():
    def __init__(self,name):
        self.name = name

class AbstractPeople(ABC):
    @abstractmethod
    def giveDolls(self):#送洋娃娃
        pass
    
    @abstractmethod
    def giveFlowers(self): #送花
        pass
    
    @abstractmethod
    def giveChocolate(self):#送巧克力
        pass

# 真实主题
class Pursuit(AbstractPeople):
    def __init__(self,sg):
        self.mm = sg        
    def giveDolls(self):
        print(self.mm.name,'送你洋娃娃')
        pass   
    def giveFlowers(self):
        print(self.mm.name,'送你花')
        pass     
    def giveChocolate(self):
        print(self.mm.name,'送你巧克力')
        pass
    
#代理
class Proxy(AbstractPeople):
    def __init__(self,sg):
        self.ps = Pursuit(sg)
        
    def giveDolls(self):
        self.ps.giveDolls()
        
    def giveFlowers(self):
        self.ps.giveFlowers()
        
    def giveChocolate(self):
        self.ps.giveChocolate()
        
if __name__ == '__main__':
    sg=SchoolGirl('jiaojiao')
    ps=Proxy(sg)
    
    ps.giveDolls()
    ps.giveFlowers()
    ps.giveChocolate()